#! venv/Scripts/python
# -*- coding: utf-8 -*-
import pygame
class Fight:
    def __init__(self, fighter_left, fighter_right):
        self.fighter_left = fighter_left
        self.fighter_right = fighter_right

# 首先确定精灵，需要继承
class GameSprite(pygame.sprite.Sprite):
    def __init__(self, Recrx, Recty, speed=1, Url="picture/human.jpg", ):
        super(GameSprite, self).__init__()

        self.image = self.load(Url)
        self.rect = self.image.get_rect()
        self.rect.x, self.rect.y = Recrx, Recty
        self.speed = speed

        self.current_index = 0

    def load(self, Url):
        """
        在这里，需要做两件事：
        1、确定图像的集合，把所有状态图都放在一个列表中，或是别的集合形式
        2、确定一开始的状态图，在确定图像集合后，在init中调用函数，return 集合【0】就行
        :param Url: 传入的地址
        :return: 初始化的状态图
        """
        # 设置精灵的图片，需要通过分割的方式确定传入的图像
        self.image = pygame.image.load(Url)
        self.image = pygame.transform.scale(self.image, (240, 60))
        # 将图像传入一个列表，不同的下标对应不同的图像
        self.Images = []
        # 确定单个图像的大小，用以分割大图片
        self.RactWidth = self.image.get_width() // 4
        self.Ractheight = self.image.get_height()

        # 开始分割图片，使用方法可以不同，最后有一个集合就行
        x = 0
        # 这里采用的是单行，所以会简单一些
        for SurfaceNo in range(4):
            # 生成一个绘图对象，大小是预设的大小
            self.RactSurface = pygame.Surface([self.RactWidth, self.Ractheight])
            # 在这个绘图对象上画图
            self.RactSurface.blit(self.image, [x, 0])
            self.Images.append(self.RactSurface.copy())

            # 把大图整个左移，那么就能实现窗口右移的目的
            # 如果是两行图片，那么就需要更复杂的方法

            # 在图像放置的过程中，边框的坐标是不能改变的
            # 因此，就只能移动图像，把图像左移，相当于把边框右移
            #
            # self.RactSurface.blit(self.image, [x, 0])  这段代码本身的含义
            # 是将 self.image 画在 self.RactSurface 上
            # self.RactSurface.blit(self.image, [-100, 0])
            # 是指 将 image 画在 RactSurface 上，self.image需要相对偏移 -100x

            x -= self.RactWidth
        # 最后会生成一系列绘图对象组成的集合
        # 这里是初始化调用的，所以会直接返回第一个图像
        return self.Images[0]

    def ChangeImg(self, No):
        """
        用这个函数来改变图像
        :param No:
        :return:
        """
        self.image = self.Images[No]

    def Run(self):
        """
        确定“移动”这个动作
        主要用以轮换变更状态图
        :return:
        """
        self.current_index += 1
        if self.current_index > 3:
            self.current_index = 0
        self.image = self.Images[self.current_index]

    def update(self):
        """
        触发函数，每次想要触发，就调用这个
        在此调用其他改变参数的值
        :param Point:
        :return:
        """
        # if Point == 1073741906:
        #     self.rect.y -= self.speed
        #
        # if Point == 1073741905:
        #     self.rect.y += self.speed
        #
        # if Point == 1073741904:
        #     self.rect.x -= self.speed
        #
        # if Point == 1073741903:
        #     self.rect.x += self.speed
        self.Run()